/**
 * Created by yangheng940 on 2017/7/11.
 */
package com.cqfae.deploycentral.app.services;

import com.cqfae.deploycentral.app.dao.entity.ReportInfo;
import com.cqfae.deploycentral.app.dao.entity.ReportInfoTag;
import com.cqfae.deploycentral.app.dao.entity.ReportTestLink;
import com.cqfae.deploycentral.app.web.request.ReportInfoRequest;
import com.cqfae.deploycentral.app.web.response.IPage;
import com.cqfae.deploycentral.app.web.vo.FileUploadVo;
import com.cqfae.deploycentral.app.web.vo.ReportInfoVo;
import com.cqfae.deploycentral.app.web.vo.SelectedVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface ReportInfoService {

    IPage<ReportInfoVo> page(ReportInfoRequest request);

    List<ReportInfo> pageList(ReportInfoRequest request);

    Integer save(ReportInfoVo vo);

    List<ReportInfo> findAll();

    ReportInfoVo getOne(ReportInfoRequest request);

    List<SelectedVo> getSelectedList(ReportInfoRequest request);

    List<SelectedVo> getReportSelected(ReportInfoRequest request);

    /**
     * 编辑测试报告
     *
     * @param vo
     * @return
     */
    Integer edit(ReportInfoVo vo);

    /**
     * 获得ReportInfoTag
     *
     * @param reportInfoTag
     * @return
     */
    List<ReportInfoTag> getReportInfoTagList(ReportInfoTag reportInfoTag);

    Integer deleteOneTag(Long id);

    /**
     * 获取testLink数据
     *
     * @return
     */
    List<SelectedVo> getTestLink(String reportCode);

    /**
     * 获取JIRA数据
     *
     * @return
     */
    List<SelectedVo> getJiraVersion(String reportCode);

    /**
     * 根据reportCode获取版本ID
     *
     * @param reportCode
     * @return
     */
    List<ReportTestLink> getReportTestLink(String reportCode);

    /**
     * 提交至待发布
     *
     * @param reportInfoVo
     * @return
     */
    int commitPublic(ReportInfoVo reportInfoVo);

    /**
     * 文件上传
     *
     * @return
     */
    FileUploadVo fileUpload(MultipartFile file);

    /**
     * 删除文件
     *
     * @param fileId
     * @return
     */
    Integer fileDelete(String fileId);

    /**
     * 删除文件
     *
     * @param fileId
     * @return
     */
    void downloadFile(long fileId, HttpServletResponse response);


    /**
     * 获取测试计划
     *
     * @param reportInfoRequest
     * @return
     */
    List<SelectedVo> getTestPlan(ReportInfoRequest reportInfoRequest);

    /**
     * 生成pdf
     *
     * @param reportCode
     * @return
     */
    String getPdf(String reportCode);

    /**
     * 更新uat显示flag
     *
     * @param reportInfoRequest
     * @return
     */
    Integer updateUatFlag(ReportInfoRequest reportInfoRequest);

}
